Modern software runtime environments create abstractions when implementing Application Programming Interfaces (APIs). Such abstractions hide the complexity of the system and provide a logical view of the system to the user.
Debugging objects in such modern software runtime environments presents a challenge—as debugging such objects typically executes the code within the context of the application being debugged. As a result, debugging objects in an environment potentially changes the environment.